package com.maxie.chain;

import java.math.BigDecimal;

/**
 * 责任链模式：抽象类
 */
public abstract class ReimburseLink {

    /**
     * 下游责任点
     */
    private ReimburseLink next;

    /**
     * 当前责任点处理不了时，需要获取下游责任点处理
     * @return
     */
    public ReimburseLink next() {
        return next;
    }

    /**
     * 初始化时，设置责任链
     * @param next
     * @return
     */
    public ReimburseLink appendNext(ReimburseLink next) {
        this.next = next;
//        return next;
        // 为了链式设置责任链
        return this;
    }

    /**
     * 当前责任点处理业务的逻辑
     * @param money
     */
    public abstract void handleReimburse(BigDecimal money);
}
